﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Inventario_HardSoft.Presentacion;
using Inventario_HardSoft.ADO;
using Inventario_HardSoft.Presentacion.Importar;
using Inventario_HardSoft.Terceros;
using Inventario_HardSoft.Presentacion.ImprimeGridView;


namespace Inventario_HardSoft
{

    public partial class Principal : Form
    {
        private USUARIO user;

        public Principal()
        {
            InitializeComponent();               
        }

        public Principal(USUARIO u) : this()
        {
            user = new USUARIO();
            user = u;
            this.Text = "Bienvenido: " + user.NOMBRE + " - Camilo 1.0";
        }

        private void ShowNewForm(object sender, EventArgs e)
        {
            Registro_de_Problemas iproblemas = new Registro_de_Problemas(user.NOMBRE);
            iproblemas.ShowDialog(this);
        }

        private void OpenFile(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();
            openFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
            openFileDialog.Filter = "Archivos de texto (*.txt)|*.txt|Todos los archivos (*.*)|*.*";
                if (openFileDialog.ShowDialog(this) == DialogResult.OK)
                {
                    string FileName = openFileDialog.FileName;
                }
        }

        private void SaveAsToolStripMenuItem_Click(object sender, EventArgs e)
        {
            SaveFileDialog saveFileDialog = new SaveFileDialog();
            saveFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
            saveFileDialog.Filter = "Archivos de texto (*.txt)|*.txt|Todos los archivos (*.*)|*.*";
                if (saveFileDialog.ShowDialog(this) == DialogResult.OK)
                {
                    string FileName = saveFileDialog.FileName;
                }
        }

        private void ExitToolsStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void CloseAllToolStripMenuItem_Click(object sender, EventArgs e)
        {
            foreach (Form childForm in MdiChildren)
            {
                childForm.Close();
            }
        }


  
        private void menu_Usuario_Click(object sender, EventArgs e)
        {
            Registro_Usuario iusuario = new Registro_Usuario();
            iusuario.ShowDialog(this);
        }

        private void menu_Asistente_Reparador_Click(object sender, EventArgs e)
        {
            Historial_por_Asistente_Reparador ihasistente = new Historial_por_Asistente_Reparador();
            bool formfound = false;

            foreach (Form f in this.MdiChildren)
            {
                if (f.Name == ihasistente.Name)
                {

                    f.Focus();
                    formfound = true;
                    break;
                }
                else
                {
                    formfound = false;
                }
            }

            if (!formfound)
            {
                ihasistente.MdiParent = this;
                ihasistente.Show();
            }
        }

        private void menu_Tipo_Problema_Click(object sender, EventArgs e)
        {
            Historial_por_Tipo_Problema itipo_problema = new Historial_por_Tipo_Problema();
            bool formfound = false;

            foreach (Form f in this.MdiChildren)
            {
                if (f.Name == itipo_problema.Name)
                {

                    f.Focus();
                    formfound = true;
                    break;
                }
                else
                {
                    formfound = false;
                }
            }

            if (!formfound)
            {
                itipo_problema.MdiParent = this;
                itipo_problema.Show();
            }
        }

        private void menu_Usuarios_Click(object sender, EventArgs e)
        {
            Historial_Usuarios_y_sus_Problemas ihusuario = new Historial_Usuarios_y_sus_Problemas();
            bool formfound = false;

            foreach (Form f in this.MdiChildren)
            {
                if (f.Name == ihusuario.Name)
                {

                    f.Focus();
                    formfound = true;
                    break;
                }
                else
                {
                    formfound = false;
                }
            }

            if (!formfound)
            {
                ihusuario.MdiParent = this;
                ihusuario.Show();
            }
        }
 
        private void menu_Registro_Solucion_Click(object sender, EventArgs e)
        {
            Registro_de_Reparacion_de_Problemas isoluciones = new Registro_de_Reparacion_de_Problemas();
            isoluciones.ShowDialog(this);
        }

        private void menu_Registro_Programas_Click(object sender, EventArgs e)
        {
            Registro_de_Programas iprogramas = new Registro_de_Programas();
            iprogramas.ShowDialog(this);
        }

        private void problemasToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Registro_de_Problemas iproblemas = new Registro_de_Problemas(user.NOMBRE);
            iproblemas.ShowDialog(this);
        }

        private void btn_Historial_Usuario_Problema_Click(object sender, EventArgs e)
        {
            this.menu_Usuarios_Click(sender, e);
        }

        private void btn_Historial_Tipo_Problema_Click(object sender, EventArgs e)
        {
            this.menu_Tipo_Problema_Click(sender, e);
        }

        private void btn_Historial_Asistente_Reparador_Click(object sender, EventArgs e)
        {
            menu_Asistente_Reparador_Click(sender, e);
        } 

        private void btn_Registrar_Problema_Click(object sender, EventArgs e)
        {
            Registro_de_Programas iprogramas = new Registro_de_Programas();
            iprogramas.ShowDialog(this);
        }

        private void btn_Reg_Solucion_Problema_Click(object sender, EventArgs e)
        {
            Registro_de_Reparacion_de_Problemas isoluciones = new Registro_de_Reparacion_de_Problemas();
            isoluciones.ShowDialog(this);
        }

        private void btn_Reg_Usuario_Click(object sender, EventArgs e)
        {
            Registro_Usuario iusuario = new Registro_Usuario();
            iusuario.ShowDialog(this);
        }

        private void btn_Buscar_Click(object sender, EventArgs e)
        {
            Historial_Usuarios_y_sus_Problemas ihusuario = new Historial_Usuarios_y_sus_Problemas();
            ihusuario.ShowDialog(this);
        }
        
        public void Principal_Load(object sender, EventArgs e)
        {
            Historial_Usuarios_y_sus_Problemas ihusuario = new Historial_Usuarios_y_sus_Problemas();
            ihusuario.MdiParent = this;
            ihusuario.WindowState = FormWindowState.Maximized;
            ihusuario.Show();
        }

        private void Principal_MdiChildActivate(object sender, EventArgs e)
        {
            object o = sender;
        }

        private void usuariosToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            Registro_Multiples_Usuarios imultipleUsuarios = new Registro_Multiples_Usuarios();
            bool formfound = false;

            foreach (Form f in this.MdiChildren)
            {
                if (f.Name == imultipleUsuarios.Name)
                {

                    f.Focus();
                    formfound = true;
                    break;
                }
                else
                {
                    formfound = false;
                }
            }

            if (!formfound)
            {
                imultipleUsuarios.MdiParent = this;
                imultipleUsuarios.Show();
            }
        }
         
        private void Principal_FormClosed(object sender, FormClosedEventArgs e)
        {
            Application.Exit(); 
        }
          
        private void estadosToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Lista_Estado_Equipo listestadoequipo = new Lista_Estado_Equipo();
            listestadoequipo.ShowDialog(this);
        }
         
        private void liberarToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Liberar_equipo liberaequipo = new Liberar_equipo();
            liberaequipo.ShowDialog(this);
        }

        private void darDeBajaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            DarBajaEquipo darbajaEquipo = new DarBajaEquipo();
            darbajaEquipo.ShowDialog(this);
        }

        private void equiposToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            Registro_de_Equipo regequipo = new Registro_de_Equipo();
            regequipo.ShowDialog(this);
        }

        private void equiposAUsuariosToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Asignar_Equipo asigequipo = new Asignar_Equipo();
            asigequipo.ShowDialog(this);
        }

        private void programasAEquiposToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Asignar_Programas asigprogram = new Asignar_Programas();
            asigprogram.ShowDialog(this);
        }

        private void actualizarEquipoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ActualizarEquipo actEquipo = new ActualizarEquipo();
            actEquipo.ShowDialog(this);
        }

        private void gestionarProgramaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Gestionar_Programa gestPrograma = new Gestionar_Programa();
            gestPrograma.ShowDialog(this);
        }

        private void equiposToolStripMenuItem_Click(object sender, EventArgs e)
        {

        }

        private void programasToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ImportarProgramas iImportarProgramas = new ImportarProgramas();
            iImportarProgramas.ShowDialog(this);
        }

        private void registroToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Crear_Proyecto createproyecto = new Crear_Proyecto();
            createproyecto.ShowDialog(this);
        }

        private void controlToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Control_Proyecto controlProyecto = new Control_Proyecto();
            controlProyecto.ShowDialog(this);
        }

        private void historialToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Historial_Proyecto ihistProyecto = new Historial_Proyecto();
            bool formfound = false;

            foreach (Form f in this.MdiChildren)
            {
                if (f.Name == ihistProyecto.Name)
                {
                    f.Focus();
                    formfound = true;
                    break;
                }
                else
                {
                    formfound = false;
                }
            }

            if (!formfound)
            {
                ihistProyecto.MdiParent = this;
                ihistProyecto.Show();
            }
        }

        private void actualizarUsuarioToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Actualizar_Usuario actualizarUsuario = new Actualizar_Usuario();
            actualizarUsuario.ShowDialog(this);
        }

        private void problemasRechasadosToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Problema_Rechazado probRechazados = new Problema_Rechazado();
            probRechazados.ShowDialog(this);
        }

        private void empresaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Registrar_Empresa registrarEmpresa = new Registrar_Empresa();
            registrarEmpresa.ShowDialog(this);
        }

        private void sucursalToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Registro_de_Sucursales registrarSucursales = new Registro_de_Sucursales();
            registrarSucursales.ShowDialog(this);            
        }

        private void gestionarEmpresaSucursalesToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Gestionar_Sucursales gestionarsucursales = new Gestionar_Sucursales();
            gestionarsucursales.ShowDialog(this);
        }

        private void menu_Imprimir_Click(object sender, EventArgs e)
        {
            Form f = this.ActiveMdiChild;
            DataGridView grid = new DataGridView();
            string titulo = string.Empty;

            if (f is Historial_por_Tipo_Problema)
            {
                Historial_por_Tipo_Problema iform = f as Historial_por_Tipo_Problema;

                grid = iform.Controls["grid_Hardware"] as DataGridView;
                RadioButton rb_Hw = iform.Controls["rbHw"] as RadioButton;
                RadioButton rb_Sw = iform.Controls["rbSw"] as RadioButton;

                if (rb_Hw.Checked)
                {
                    titulo = "Historial por tipo de problema: Hardware";
                }

                if (rb_Sw.Checked)
                {
                    titulo = "Historial por tipo de problema: Software";
                }
            }
            else if (f is Historial_por_Asistente_Reparador)
            {
                Historial_por_Asistente_Reparador iasist = f as Historial_por_Asistente_Reparador;

                TabControl tabs = iasist.Controls["tabControl1"] as TabControl;
                ComboBox cmb_Asistente = iasist.Controls["cb_Nomb_Asist_Reparador"] as ComboBox;
                TabPage selectedTab = tabs.SelectedTab;

                string nombreTab = selectedTab.Text;
                
                switch (nombreTab)
                {
                    case "Hardware":
                        titulo = "Historial por asistente reparador: "+cmb_Asistente.SelectedItem.ToString()+" - Hardware";
                        grid = selectedTab.Controls["grib_Asistente_ReparadorHw"] as DataGridView;

                        break;
                    case "Software":
                        titulo = "Historial por asistente reparador: " + cmb_Asistente.SelectedItem.ToString() + " - Software";
                        grid = selectedTab.Controls["grib_Asistente_ReparadorSw"] as DataGridView;
                        break;
                }
            }
            else if (f is Historial_Usuarios_y_sus_Problemas)
            {
                Historial_Usuarios_y_sus_Problemas iusuarios = f as Historial_Usuarios_y_sus_Problemas;

                TabControl tbs = iusuarios.Controls["tabControl1"] as TabControl;
                TextBox txt_Usuario = iusuarios.Controls["txt_Usuario"] as TextBox;

                TabPage selectTab = tbs.SelectedTab;

                string nombreTb = selectTab.Text;
                titulo = "Historial por Usuario - Problema";

                switch (nombreTb)
                {
                    case "Hardware":
                        titulo = "Historial por Usuario-Problema: "+txt_Usuario.Text+" - Hardware";
                        grid = selectTab.Controls["grib_Usuario"] as DataGridView;
                        break;
                    case "Software":
                        titulo = "Historial por Usuario-Problema: " + txt_Usuario.Text + " - Software";
                        grid = selectTab.Controls["dgSw"] as DataGridView;
                        break;
                }                
            }
            else if (f is Historial_Proyecto)
            {
                Historial_Proyecto ihistProyecto = f as Historial_Proyecto;

                grid = ihistProyecto.Controls["grid_Proyect"] as DataGridView;
                ComboBox cmbProyecto = ihistProyecto.Controls["cmbProyecto"] as ComboBox;
                titulo = "Historial del proyecto: " + cmbProyecto.SelectedItem.ToString();
            }

            PrintDataGridView.Print_DataGridView(grid, titulo, true, true);
        }
    }
}
